#pragma once
#include <iostream>
#include <list>
#include <vector>
#include "vector.h"
#include "string.h"

//#include "hashbucket.h";
//#include "unorderedset.h"
//#include "unorderedmap.h"



using namespace std;

void test1()
{
	list<int>&& li2 = list<int>{ 5,6 };


	list<int> li1 = { 1,2,3,4,5,6,7,8,9,0 };
	for(auto it : li1)
	{
		cout << it << ' ';
		++it;
		cout << it << ' ';
	}
	cout << endl;
	for (auto it : li2)
	{
		cout << it << ' ';
	}
	cout << endl;
}

void func(int&& x)
{
	cout << "right value " << x << endl;
}
void func(int& x)
{
	cout << "left value " << x << endl;
}
void func(const int& x)
{
	cout << "const left value " << x << endl;
}

void test2()
{
	int c1 = 1;
	const int c2 = 2;
	int&& c3 = 3;

	func(c1);
	func(c2);
	func(3);
	func(move(c1));
}

void test3()
{
	MyVector::Vector<int> v1;
	v1._push_back(1);
	v1._push_back(2);
	v1._push_back(3);
	v1._push_back(4);
	v1._push_back(5);
	MyVector::Vector<int> v2(v1);
	MyVector::Vector<int> v3(1);

	v1 = v2;
//	v2 = move(v3);


}

void test4()
{
	MySpace::String str1("sdsdasda");
	MySpace::String str2 =str1;
	MySpace::String str3= MySpace::String("sdsdasda");
	MySpace::String str4=move(str1);
}


int main()
{
	//test1();
	//test2();
	//test3();
	test4();
	return 0;
}